package com.lmaye.design.patterns.creation.singleton;

/**
 * -- 静态内部类(推荐使用)
 *
 * <pre>
 *     优点：
 *     - 线程安全，利用静态内部类特点实现延迟加载，效率高。
 *     缺点：
 *     -
 * </pre>
 *
 * @author lmay.Zhou
 * @date 2020/11/13 15:37 星期五
 * @qq 379839355
 * @email lmay@lmaye.com
 * @since JDK1.8
 */
public class SingletonStaticInner {
    private SingletonStaticInner() {
    }

    /**
     * 静态内部类：
     * 1. 加载SingletonStaticInner类时，不会立即实例化StaticInner静态内部类。调用getInstance方法时才会加载StaticInner类。
     * 2. 在静态内部类进行初始化时，别的线程无法进入。
     */
    private static class StaticInner {
        private static final SingletonStaticInner INSTANCE = new SingletonStaticInner();
    }

    public static SingletonStaticInner getInstance() {
        return StaticInner.INSTANCE;
    }
}
